package com.ynet.middleground.approve.entity;

import java.io.Serializable;
import java.time.LocalDateTime;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 审批任务操作待同步暂存表
 * </p>
 *
 * @author liwq
 * @since 2021-03-22
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("ar_task_operate_stage")
public class ArTaskOperateStage extends Model<ArTaskOperateStage> {

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 任务处理人
     */
    private Integer assignee;

    /**
     * 任务 id
     */
    private String taskId;

    /**
     * 流程实例 id
     */
    private String processInstanceId;

    /**
     * 中台是否已完成 1：已完成，0：未完成 默认 0
     */
    private Boolean isCompleted;

    /**
     * 渠道是否允许执行 1：已完成，0：未完成 默认 为空，若为空，则说明该任务为处理中
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Boolean isAllow;

    /**
     * 是否有待签章文件 默认为空， 空或者 false 代表 无待签章文件
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Boolean isToBeSigned;

    /**
     * 是否有指令
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Boolean hasCommand;

    /**
     * 指令结果
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Boolean commandResult;

    /**
     * 渠道不允许该操作时反馈的原因
     */
    private String reason;

    /**
     * 放款验证码
     */
    private String lendersCaptcha;

    /**
     * 执行操作 0: 发起申请，1: 同意，2: 驳回，3: 退回，4: 拒绝，5: 撤销申请，6: 回转， 7：驳回上一级， 8：转办
     */
    private String operateType;

    /**
     * 目标任务定义 Key（仅供执行操作为 6 时使用）
     */
    private String targetTaskKey;

    /**
     * 业务操作数据（需符合业务操作数据设计格式）
     */
    private String businessOperateData;

    /**
     * 处理意见
     */
    private String comment;

    /**
     * 处理意见附件列表 JSON 格式
     */
    private String commentFiles;

    /**
     * 是否删除 1：删除，0：未删除 默认 0
     */
    private Boolean isDeleted;

    /**
     * 创建时间
     */
    private LocalDateTime gmtCreate;

    /**
     * 创建者
     */
    private Integer createBy;

    /**
     * 更新时间
     */
    private LocalDateTime gmtModified;

    /**
     * 更新者
     */
    private Integer modifiedBy;

    @Override
    protected Serializable pkVal() {
        return this.id;
    }

}
